#include"myFunc.h"

void menu(Supplier *,Goods *,Staff *,Procure *,Procure2 *);

void menu1(Supplier *,Goods *,Staff *,Procure *,Procure2 *);

void menu1_1(Supplier *);
void menu1_1_1(Supplier *);
void menu1_1_2(Supplier *);
void menu1_1_3(Supplier *);
void menu1_1_4(Supplier *);
void menu1_1_5(Supplier *);

void menu1_2(Goods *);
void menu1_2_1(Goods *);
void menu1_2_2(Goods *);
void menu1_2_3(Goods *);
void menu1_2_4(Goods *);
void menu1_2_5(Goods *);

void menu1_3(Staff *);
void menu1_3_1(Staff *);
void menu1_3_2(Staff *);
void menu1_3_3(Staff *);
void menu1_3_4(Staff *);
void menu1_3_5(Staff *);

void menu1_4(Procure *,Procure2 *);
void menu1_4_1(Procure *);
void menu1_4_2(Procure2 *);
void menu1_4_3(Procure *);
void menu1_4_4(Procure2 *);
void menu1_4_5(Procure *);
void menu1_4_6(Procure2 *);
void menu1_4_7(Procure *);
void menu1_4_8(Procure2 *);
void menu1_4_9(Procure *);
void menu1_4_10(Procure2 *);

void menu2(Goods *,Staff *,Procure *,Procure2 *);

void menu2_1(int ,Staff *);
void menu2_2(Goods *);
void menu2_3(Procure *,Procure2 *);


void menu(Supplier *s,Goods *g,Staff *a,Procure *p,Procure2 *r)
{
	
	while(1)
	{
		system("cls");
		printf("\n\t\t超市进销存管理系统主菜单\n");
        printf("\t-----------------------------\n");
        printf("\t\t1---管理员用户登录\n");
        printf("\t\t2---普通用户登录\n");
		printf("\t\t0---退出\n");  
        printf("\t-----------------------------\n");
        printf("\t   输入数字(0 - 7):");
		int choice;
		scanf("%d",&choice);
		switch(choice)
		{
			case 0:
				{
					printf("退出");
					return;
				}
				
			case 1:
				{
					menu1(s,g,a,p,r);
					break;
				}
				
			case 2:
				{
					menu2(g,a,p,r);
					break;
				}
				
			default: 
			    {
			    	fflush(stdin);
			    	printf("输入错误！！！\n");
				    continue;
		    	}
		    	
		    	system("pause");
		}
		
		
	}
}

void menu2(Goods *g,Staff *s,Procure *p,Procure2 *r)
{
	printf("输入员工密码：");
	long long int passWord;
	scanf("%lld",&passWord);
	int flag=check(s,passWord);
	if(flag==-1)
	{
		printf("密码错误\n");
		system("pause");
		return;
	}
	while(1)
	{
		system("cls");
		printf("Hello! %s\n",s[flag].name);
		printf("\n\t\t普通用户管理系统主菜单\n");
        printf("\t--------------------------------------------\n");
        printf("\t\t1---输出本人员工信息\n");
        printf("\t\t2---输出所有商品信息\n");
        printf("\t\t3---输出所有采购信息\n");
		printf("\t\t0---返回\n");  
        printf("\t--------------------------------------------\n");
        printf("\t   输入数字(0 - 3):");
		int choice;
		scanf("%d",&choice);
		switch(choice)
		{
			case 0:
				{
					return;
				}
				
			case 1:
				{
					menu2_1(flag,s);
					break;
				}
				
			case 2:
				{
					menu2_2(g);
					break;
				}
				
			case 3:
				{
					menu2_3(p,r);
					break;
				}
				
			default: 
			    {
			    	fflush(stdin);
			    	printf("输入错误！！！\n");
				    continue;
		    	}
		}
	}
	
	
	system("pause");
}

void menu2_1(int flag,Staff *a)
{
	printf("本人信息如下：\n");
	showStaff(a,flag);
	system("pause");
	return;
}

void menu2_2(Goods *a)
{
	printf("所有商品信息如下：\n");
	traversalGoods(a);
	system("pause");
	
	return;
}

void menu2_3(Procure *a,Procure2 *r)
{
	printf("所有采购主表信息如下：\n");
	traversalProcure(a);
	printf("\n\n");
	printf("所有采购明细信息如下：\n");
	traversalProcure2(r);
	system("pause");
	
	return;
}

void menu1(Supplier *s,Goods *g,Staff *a,Procure *p,Procure2 *r)
{
	while(1)
	{
		system("cls");
		printf("\n\t\t管理员用户管理系统主菜单\n");
        printf("\t-----------------------------\n");
        printf("\t\t1---供应商管理\n");
        printf("\t\t2---商品管理\n");
        printf("\t\t3---员工管理\n");
        printf("\t\t4---采购管理\n");
		printf("\t\t0---返回\n");  
        printf("\t-----------------------------\n");
        printf("\t   输入数字(0 - 4):");
		int choice;
		scanf("%d",&choice);
		switch(choice)
		{
			case 0:
				{
					printf("退出");
					return;
				}
				
			case 1:
				{
					menu1_1(s);
					break;
				}
				
			case 2:
				{
					menu1_2(g);
					break;
				}
				
			case 3:
				{
					menu1_3(a);
					break;
				}
				
			case 4:
				{
					menu1_4(p,r);
					break;
				}
				
			default: 
			    {
			    	fflush(stdin);
			    	printf("输入错误！！！\n");
				    continue;
		    	}
		    	
		    	system("pause");
		}
		
		
	}
}

void menu1_1(Supplier *s)
{
	while(1)
	{
		system("cls");
		printf("\n\t\t供应商管理系统主菜单\n");
        printf("\t-----------------------------\n");
        printf("\t\t1---数据输入\n");
        printf("\t\t2---数据输出\n");
        printf("\t\t3---数据查询\n");
		printf("\t\t4---数据修改\n");
		printf("\t\t5---数据删除\n");
		printf("\t\t0---返回\n");  
        printf("\t-----------------------------\n");
        printf("\t   输入数字(0 - 5):");
		int choice;
		scanf("%d",&choice);
		switch(choice)
		{
			case 0:
				{
					printf("退出");
					return;
				}
				
			case 1:
				{
					menu1_1_1(s);
					break;
				}
				
			case 2:
				{
					menu1_1_2(s);
					break;
				}
				
			case 3:
				{
					menu1_1_3(s);
					break;
				}
				
			case 4:
				{
					menu1_1_4(s);
					break;
				}
				
			case 5:
				{
					menu1_1_5(s);
					break;
				}
				
			default: 
			    {
			    	fflush(stdin);
			    	printf("输入错误！！！\n");
				    continue;
		    	}
		    	
		    	system("pause");
		}
		
		
	}
}

void menu1_4(Procure *s,Procure2 *r)
{
	while(1)
	{
		system("cls");
		printf("\n\t\t采购管理系统主菜单\n");
        printf("\t-----------------------------\n");
        printf("\t\t1---主表数据输入\n");
        printf("\t\t2---明细数据输入\n");
        printf("\t\t3---主表数据输出\n");
        printf("\t\t4---明细数据输出\n");
        printf("\t\t5---主表数据查询\n");
        printf("\t\t6---明细数据查询\n");
		printf("\t\t7---主表数据修改\n");
		printf("\t\t8---明细数据修改\n");
		printf("\t\t9---主表数据删除\n");
		printf("\t\t10---明细数据删除\n");
		printf("\t\t0---返回\n");  
        printf("\t-----------------------------\n");
        printf("\t   输入数字(0 - 6):");
		int choice;
		scanf("%d",&choice);
		switch(choice)
		{
			case 0:
				{
					printf("退出");
					return;
				}
				
			case 1:
				{
					menu1_4_1(s);
					break;
				}
				
			case 2:
				{
					menu1_4_2(r);
					break;
				}
				
			case 3:
				{
					menu1_4_3(s);
					break;
				}
				
			case 4:
				{
					menu1_4_4(r);
					break;
				}
				
			case 5:
				{
					menu1_4_5(s);
					break;
				}
				
			case 6:
				{
					menu1_4_6(r);
					break;
				}
				
			case 7:
				{
					menu1_4_7(s);
					break;
				}
				
			case 8:
				{
					menu1_4_8(r);
					break;
				}
				
			case 9:
				{
					menu1_4_9(s);
					break;
				}
				
			case 10:
				{
					menu1_4_10(r);
					break;
				}
				
			default: 
			    {
			    	fflush(stdin);
			    	printf("输入错误！！！\n");
				    continue;
		    	}
		    	
		    	system("pause");
		}
		
		
	}
}

void menu1_3(Staff *s)
{
	while(1)
	{
		system("cls");
		printf("\n\t\t员工管理系统主菜单\n");
        printf("\t-----------------------------\n");
        printf("\t\t1---数据输入\n");
        printf("\t\t2---数据输出\n");
        printf("\t\t3---数据查询\n");
		printf("\t\t4---数据修改\n");
		printf("\t\t5---数据删除\n");
		printf("\t\t0---返回\n");  
        printf("\t-----------------------------\n");
        printf("\t   输入数字(0 - 5):");
		int choice;
		scanf("%d",&choice);
		switch(choice)
		{
			case 0:
				{
					printf("退出");
					return;
				}
				
			case 1:
				{
					menu1_3_1(s);
					break;
				}
				
			case 2:
				{
					menu1_3_2(s);
					break;
				}
				
			case 3:
				{
					menu1_3_3(s);
					break;
				}
				
			case 4:
				{
					menu1_3_4(s);
					break;
				}
				
			case 5:
				{
					menu1_3_5(s);
					break;
				}
				
			default: 
			    {
			    	fflush(stdin);
			    	printf("输入错误！！！\n");
				    continue;
		    	}
		    	
		    	system("pause");
		}
		
		
	}
}

void menu1_1_1(Supplier *a)
{
	printf("输入添加个数：");
	int n;
	scanf("%d",&n);
	addAllSup(a,n);
	printf("添加成功\n");
	system("pause");
	
	return;
}

void menu1_4_1(Procure *a)
{
	printf("输入添加个数：");
	int n;
	scanf("%d",&n);
	addAllProcure(a,n);
	printf("添加成功\n");
	system("pause");
	
	return;
}

void menu1_4_2(Procure2 *a)
{
	printf("输入添加个数：");
	int n;
	scanf("%d",&n);
	addAllProcure2(a,n);
	printf("添加成功\n");
	system("pause");
	
	return;
}

void menu1_3_1(Staff *a)
{
	printf("输入添加个数：");
	int n;
	scanf("%d",&n);
	addAllStaff(a,n);
	printf("添加成功\n");
	system("pause");
	
	return;
}

void menu1_1_2(Supplier *a)
{
	system("cls");
	
	printf("全部供应商信息如下：\n\n");
	traversalSup(a);
	system("pause");
	return;
}

void menu1_4_3(Procure *a)
{
	system("cls");
	
	printf("全部采购主表信息如下：\n\n");
	traversalProcure(a);
	system("pause");
	return;
}

void menu1_4_4(Procure2 *a)
{
	system("cls");
	
	printf("全部采购明细信息如下：\n\n");
	traversalProcure2(a);
	system("pause");
	return;
}

void menu1_3_2(Staff *a)
{
	system("cls");
	
	printf("全部员工信息如下：\n\n");
	traversalStaff(a);
	system("pause");
	return;
}

void menu1_1_3(Supplier *a)
{
	system("cls");
	
	printf("输入查询供应商编号：");
	long long int find;
	scanf("%lld",&find);
	int flag=findByID(a,0,sizeSup(a),find);
	if(flag==-1)
	{
		printf("无符合条件的信息\n");
		system("pause");
		return;
	}
	int i=0;
	while(i<sizeSup(a))
	{
		i=findByID(a,i,sizeSup(a),find);
		if(i==-1)
		{
			break;
		}
		showSup(a,i);
		i++;
	}
	
	system("pause");
	return;
}

void menu1_4_5(Procure *a)
{
	system("cls");
	
	printf("输入查询采购单编号：");
	long long int find;
	scanf("%lld",&find);
	int flag=findByProcureID(a,0,sizeProcure(a),find);
	if(flag==-1)
	{
		printf("无符合条件的信息\n");
		system("pause");
		return;
	}
	int i=0;
	while(i<sizeProcure(a))
	{
		i=findByProcureID(a,i,sizeProcure(a),find);
		if(i==-1)
		{
			break;
		}
		showProcure(a,i);
		i++;
	}
	
	system("pause");
	return;
}

void menu1_4_6(Procure2 *a)
{
	system("cls");
	
	printf("输入查询采购单编号：");
	long long int find;
	scanf("%lld",&find);
	int flag=findByProcure2ID(a,0,sizeProcure2(a),find);
	if(flag==-1)
	{
		printf("无符合条件的信息\n");
		system("pause");
		return;
	}
	int i=0;
	while(i<sizeProcure2(a))
	{
		i=findByProcure2ID(a,i,sizeProcure2(a),find);
		if(i==-1)
		{
			break;
		}
		showProcure2(a,i);
		i++;
	}
	
	system("pause");
	return;
}

void menu1_3_3(Staff *a)
{
	system("cls");
	
	printf("输入查询员工编号：");
	long long int find;
	scanf("%lld",&find);
	int flag=findByStaffID(a,0,sizeStaff(a),find);
	if(flag==-1)
	{
		printf("无符合条件的信息\n");
		system("pause");
		return;
	}
	int i=0;
	while(i<sizeStaff(a))
	{
		i=findByStaffID(a,i,sizeStaff(a),find);
		if(i==-1)
		{
			break;
		}
		showStaff(a,i);
		i++;
	}
	
	system("pause");
	return;
}

void menu1_2_3(Goods *a)
{
	system("cls");
	
	printf("输入查询商品编号：");
	long long int find;
	scanf("%lld",&find);
	int flag=findByGoodsID(a,0,sizeGoods(a),find);
	if(flag==-1)
	{
		printf("无符合条件的信息\n");
		system("pause");
		return;
	}
	int i=0;
	while(i<sizeGoods(a))
	{
		i=findByGoodsID(a,i,sizeGoods(a),find);
		if(i==-1)
		{
			break;
		}
		showGoods(a,i);
		i++;
	}
	
	system("pause");
	return;
}

void menu1_1_4(Supplier *s)
{
	system("cls");
	
	printf("输入修改供应商编号：");
	long long int find;
	scanf("%lld",&find);
	
	int flag=findByID(s,0,sizeSup(s),find);
	if(flag==-1)
	{
		printf("未找到符合条件的信息\n");
		system("pause");
		return;
	}
	
	modifySup(s,flag);
	printf("修改成功\n");
	system("pause");
	return;
}

void menu1_4_7(Procure *s)
{
	system("cls");
	
	printf("输入修改采购单编号：");
	long long int find;
	scanf("%lld",&find);
	
	int flag=findByProcureID(s,0,sizeProcure(s),find);
	if(flag==-1)
	{
		printf("未找到符合条件的信息\n");
		system("pause");
		return;
	}
	
	modifyProcure(s,flag);
	printf("修改成功\n");
	system("pause");
	return;
}

void menu1_4_8(Procure2 *s)
{
	system("cls");
	
	printf("输入修改采购单编号：");
	long long int find;
	scanf("%lld",&find);
	
	int flag=findByProcure2ID(s,0,sizeProcure2(s),find);
	if(flag==-1)
	{
		printf("未找到符合条件的信息\n");
		system("pause");
		return;
	}
	
	modifyProcure2(s,flag);
	printf("修改成功\n");
	system("pause");
	return;
}

void menu1_3_4(Staff *s)
{
	system("cls");
	
	printf("输入修改员工编号：");
	long long int find;
	scanf("%lld",&find);
	
	int flag=findByStaffID(s,0,sizeStaff(s),find);
	if(flag==-1)
	{
		printf("未找到符合条件的信息\n");
		system("pause");
		return;
	}
	
	modifyStaff(s,flag);
	printf("修改成功\n");
	system("pause");
	return;
}

void menu1_2_4(Goods *s)
{
	system("cls");
	
	printf("输入修改商品编号：");
	long long int find;
	scanf("%lld",&find);
	
	int flag=findByGoodsID(s,0,sizeGoods(s),find);
	if(flag==-1)
	{
		printf("未找到符合条件的信息\n");
		system("pause");
		return;
	}
	
	modifyGoods(s,flag);
	printf("修改成功\n");
	system("pause");
	return;
}

void menu1_1_5(Supplier *s)
{
	system("cls");
	
	printf("输入删除供应商编号：");
	long long int find;
	scanf("%lld",&find);
	
	int flag=findByID(s,0,sizeSup(s),find);
	if(flag==-1)
	{
		printf("未找到符合条件的信息\n");
		system("pause");
		return;
	}
	
	removeSup(s,flag);
	printf("删除成功\n");
	system("pause");
	return;
}

void menu1_4_9(Procure *s)
{
	system("cls");
	
	printf("输入删除采购单编号：");
	long long int find;
	scanf("%lld",&find);
	
	int flag=findByProcureID(s,0,sizeProcure(s),find);
	if(flag==-1)
	{
		printf("未找到符合条件的信息\n");
		system("pause");
		return;
	}
	
	removeProcure(s,flag);
	printf("删除成功\n");
	system("pause");
	return;
}

void menu1_4_10(Procure2 *s)
{
	system("cls");
	
	printf("输入删除采购单编号：");
	long long int find;
	scanf("%lld",&find);
	
	int flag=findByProcure2ID(s,0,sizeProcure2(s),find);
	if(flag==-1)
	{
		printf("未找到符合条件的信息\n");
		system("pause");
		return;
	}
	
	removeProcure2(s,flag);
	printf("删除成功\n");
	system("pause");
	return;
}

void menu1_3_5(Staff *s)
{
	system("cls");
	
	printf("输入删除员工编号：");
	long long int find;
	scanf("%lld",&find);
	
	int flag=findByStaffID(s,0,sizeStaff(s),find);
	if(flag==-1)
	{
		printf("未找到符合条件的信息\n");
		system("pause");
		return;
	}
	
	removeStaff(s,flag);
	printf("删除成功\n");
	system("pause");
	return;
}

void menu1_2_5(Goods *s)
{
	system("cls");
	
	printf("输入删除商品编号：");
	long long int find;
	scanf("%lld",&find);
	
	int flag=findByGoodsID(s,0,sizeGoods(s),find);
	if(flag==-1)
	{
		printf("未找到符合条件的信息\n");
		system("pause");
		return;
	}
	
	removeGoods(s,flag);
	printf("删除成功\n");
	system("pause");
	return;
}

void menu1_2(Goods *g)
{
	while(1)
	{
		system("cls");
		printf("\n\t\t商品管理系统主菜单\n");
        printf("\t-----------------------------\n");
        printf("\t\t1---数据输入\n");
        printf("\t\t2---数据输出\n");
        printf("\t\t3---数据查询\n");
		printf("\t\t4---数据修改\n");
		printf("\t\t5---数据删除\n");
		printf("\t\t0---返回\n");  
        printf("\t-----------------------------\n");
        printf("\t   输入数字(0 - 5):");
		int choice;
		scanf("%d",&choice);
		switch(choice)
		{
			case 0:
				{
					printf("退出");
					return;
				}
				
			case 1:
				{
					menu1_2_1(g);
					break;
				}
				
			case 2:
				{
					menu1_2_2(g);
					break;
				}
				
			case 3:
				{
					menu1_2_3(g);
					break;
				}
				
			case 4:
				{
					menu1_2_4(g);
					break;
				}
				
			case 5:
				{
					menu1_2_5(g);
					break;
				}
				
			default: 
			    {
			    	fflush(stdin);
			    	printf("输入错误！！！\n");
				    continue;
		    	}
		    	
		    	system("pause");
		}
		
		
	}
}

void menu1_2_2(Goods *a)
{
	system("cls");
	
	printf("全部商品信息如下：\n\n");
	traversalGoods(a);
	system("pause");
	return;
}